无法携带 cookie
前后端是否设置参数
前端设置:
withCredentials: true //在跨域请求时,是否携带用户凭证;false会忽略 cookie
withCredentials
是 XMLHttpRequest 的一个属性,表示跨域请求是否提供凭据信息(cookie、HTTP 认证及客户端 SSL 证明等)
实际中用途就是跨域请求是要不要携带 cookie
后端同样设置了请求头:
response.setHeader("Access-Control-Allow-Credentials", "true");
跨域 post 请求不携带 cookie,前端设置了 axios.defaults.withCredentials = true;仍然无法解决 的解决思路
向后端先发送 post 请求之前,浏览器会先发送 OPTION 请求判断此地址是否可用,因为后端将这个预检请求拦截,导致 post 没有发送,也就没有携带 cookie 一说了
查看到我在发送 post 请求之前,浏览器还发送了一个 OPTION 请求
options 请求就是预检请求,可用于检测服务器允许的 http 方法。当发起跨域请求时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。
解决方案:在后端的拦截器处,将所有的 OPTION 请求都通过